package com.huashi.dealer.modular.business.user.vo;

import com.huashi.dealer.commonEntity.StoreAccess;
import com.huashi.dealer.commonEntity.StoreRole;
import com.huashi.dealer.commonEntity.StoreUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * Store用户登录返回VO
 *
 * @author 谭陈强
 * @since 2025-01-27
 */
@Data
@Schema(description = "Store用户登录返回VO")
public class StoreUserLoginVo {

    /**
     * 登录令牌
     */
    @Schema(description = "登录令牌")
    private String token;

    /**
     * 用户信息
     */
    @Schema(description = "用户信息")
    private StoreUser user;

    /**
     * 用户角色列表
     */
    @Schema(description = "用户角色列表")
    private List<StoreRole> roles;

    /**
     * 用户权限列表
     */
    @Schema(description = "用户权限列表")
    private List<StoreAccess> permissions;

    /**
     * 用户菜单列表
     */
    @Schema(description = "用户菜单列表")
    private List<MenuVo> menus;

    /**
     * 菜单VO
     */
    @Data
    @Schema(description = "菜单VO")
    public static class MenuVo {
        
        /**
         * 菜单ID
         */
        @Schema(description = "菜单ID")
        private Long menuId;
        
        /**
         * 菜单名称
         */
        @Schema(description = "菜单名称")
        private String menuName;
        
        /**
         * 菜单URL
         */
        @Schema(description = "菜单URL")
        private String menuUrl;

        /**
         * 是否可点击（是否有实际URL）
         */
        @Schema(description = "是否可点击")
        private Boolean clickable;

        /**
         * 菜单图标
         */
        @Schema(description = "菜单图标")
        private String menuIcon;

        /**
         * 父菜单ID
         */
        @Schema(description = "父菜单ID")
        private Long parentId;

        /**
         * 排序
         */
        @Schema(description = "排序")
        private Integer sort;
        
        /**
         * 子菜单列表
         */
        @Schema(description = "子菜单列表")
        private List<MenuVo> children;
    }
}
